#include <iostream>

using namespace std;

struct ListNode

{

    int val;

    ListNode *next;

    ListNode() : val(0), next(NULL) {}

    ListNode(int x) : val(x), next(NULL) {}

    ListNode(int x, ListNode *next) : val(x), next(next) {}
};

class Solution
{

public:
    typedef ListNode *pNode;
    // 完成本函数
    ListNode *rotateRight(ListNode *head, int k)
    {
        if (!head || !k)
            return head;
        pNode ret = head, tail = head, prev = nullptr;
        while (--k)
            tail = tail->next;
        while (tail->next)
        {
            tail = tail->next;
            prev = ret;
            ret = ret->next;
        }
        if (prev)
            prev->next = nullptr;
        tail->next = head;
        return ret;
    }
};
int len;

ListNode *createByTail()

{

    ListNode *head;

    ListNode *p1, *p2{};

    int n = 0, num;

    cin >> len;

    head = NULL;

    while (n < len && cin >> num)

    {

        p1 = new ListNode(num);

        n = n + 1;

        if (n == 1)

            head = p1;

        else

            p2->next = p1;

        p2 = p1;
    }

    return head;
}

void displayLink(ListNode *head)

{

    ListNode *p;

    p = head;

    cout << "head-->";

    while (p != NULL)

    {

        cout << p->val << "-->";

        p = p->next;
    }

    cout << "tail\n";
}

int main()

{

    int k;

    ListNode *head = createByTail();

    cin >> k;

    if (len)
        k %= len;
    else
        k = 0;

    head = Solution().rotateRight(head, k);

    displayLink(head);

    return 0;
}